//
//  HXDStatusListViewModel.swift
//  weibo
//
//  Created by huxuedong on 15/12/9.
//  Copyright © 2015年 huxuedong. All rights reserved.
//

import UIKit

class HXDStatusListViewModel: NSObject {
    
    //状态列表数组，其中的元素为HXDStatusViewModel类型
    var statusList: [HXDStatusViewModel]?
    
    //加载微博数据，count为加载微博的条数
    func loadData(isUpLoad: Bool, complete: (count: Int, isSuccessed: Bool) -> ()) {
        //如果是上拉加载，则取到当前微博的最后一个状态的id
        var maxId = isUpLoad == true ?(statusList?.last?.status?.id ?? 0) : 0
        if maxId > 0 {
            //获取当前微博的最后一个状态的上一条微博状态(id越小发送时间越早)
            maxId -= 1
        }
        //如果不是上拉加载(下拉刷新)，取到当前微博的第一条状态的id
        let sinceId = isUpLoad == true ? 0 : (statusList?.first?.status?.id ?? 0)
        //发送网络请求，获取用户微博
        HXDNetworkTools.shareTools.loadStatus(HXDUserAccountViewModel.shareInstance.accessToken!, maxId: maxId, sinceId: sinceId) { (response, error) -> () in
            if error != nil {
                complete(count: 0, isSuccessed: false)
                return
            }
            //请求回来的数据是否是字典
            guard let result = response as? [String: AnyObject] else {
                return
            }
            //请求回来的数据字典中key为"statuses"的节点是否是字典数组
            guard let statusDict = result["statuses"] as? [[String: AnyObject]] else {
                return
            }
            //创建一个数组，数组中的元素为HXDStatusViewModel类型
            var tempArray = [HXDStatusViewModel]()
            for value in statusDict {
                //字典转模型
                let status = HXDStatus(dict: value)
                tempArray.append(HXDStatusViewModel(status: status))
            }
            if self .statusList == nil {
                self.statusList = [HXDStatusViewModel]()
            }
            if isUpLoad {
                self.statusList = self.statusList! + tempArray
            } else {
                self.statusList = tempArray + self.statusList!
            }
            complete(count: tempArray.count, isSuccessed: true)
        }
    }

}
